home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / demos / VisualAge for Java 2.0 Entry / setup / data1.cab / ide-e / IDE / cache / GJGMR (.txt) < prev    next >
Encoding:
Java Class File  |  1998-09-16  |  3.4 KB  |  172 lines

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.AbstractButton;
  4. import com.sun.java.swing.JButton;
  5. import com.sun.java.swing.SwingConstants;
  6. import com.sun.java.swing.UIManager;
  7. import java.awt.Color;
  8. import java.awt.Component;
  9. import java.awt.Dimension;
  10. import java.awt.Graphics;
  11.  
  12. public class BasicArrowButton extends JButton implements SwingConstants {
  13.    protected int direction;
  14.  
  15.    public BasicArrowButton(int direction) {
  16.       this.setDirection(direction);
  17.       ((Component)this).setBackground(UIManager.getColor("control"));
  18.    }
  19.  
  20.    public int getDirection() {
  21.       return this.direction;
  22.    }
  23.  
  24.    public Dimension getMaximumSize() {
  25.       return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
  26.    }
  27.  
  28.    public Dimension getMinimumSize() {
  29.       return new Dimension(5, 5);
  30.    }
  31.  
  32.    public Dimension getPreferredSize() {
  33.       return new Dimension(16, 16);
  34.    }
  35.  
  36.    public boolean isFocusTraversable() {
  37.       return false;
  38.    }
  39.  
  40.    public void paint(Graphics g) {
  41.       int w = ((Component)this).getSize().width;
  42.       int h = ((Component)this).getSize().height;
  43.       Color origColor = g.getColor();
  44.       boolean isPressed = ((AbstractButton)this).getModel().isPressed();
  45.       boolean isEnabled = ((Component)this).isEnabled();
  46.       g.setColor(((Component)this).getBackground());
  47.       g.fillRect(1, 1, w - 2, h - 2);
  48.       if (isPressed) {
  49.          g.setColor(UIManager.getColor("controlShadow"));
  50.          g.drawRect(0, 0, w - 1, h - 1);
  51.       } else {
  52.          g.drawLine(0, 0, 0, h - 1);
  53.          g.drawLine(1, 0, w - 2, 0);
  54.          g.setColor(UIManager.getColor("controlHighlight"));
  55.          g.drawLine(1, 1, 1, h - 3);
  56.          g.drawLine(2, 1, w - 3, 1);
  57.          g.setColor(UIManager.getColor("controlShadow"));
  58.          g.drawLine(1, h - 2, w - 2, h - 2);
  59.          g.drawLine(w - 2, 1, w - 2, h - 3);
  60.          g.setColor(UIManager.getColor("controlDkShadow"));
  61.          g.drawLine(0, h - 1, w - 1, h - 1);
  62.          g.drawLine(w - 1, h - 1, w - 1, 0);
  63.       }
  64.  
  65.       if (h >= 5 && w >= 5) {
  66.          if (isPressed) {
  67.             g.translate(1, 1);
  68.          }
  69.  
  70.          int size = Math.min((h - 4) / 3, (w - 4) / 3);
  71.          size = Math.max(size, 2);
  72.          this.paintTriangle(g, (w - size) / 2, (h - size) / 2, size, this.direction, isEnabled);
  73.          if (isPressed) {
  74.             g.translate(-1, -1);
  75.          }
  76.  
  77.          g.setColor(origColor);
  78.       } else {
  79.          g.setColor(origColor);
  80.       }
  81.    }
  82.  
  83.    public void paintTriangle(Graphics g, int x, int y, int size, int direction, boolean isEnabled) {
  84.       Color oldColor = g.getColor();
  85.       int j = 0;
  86.       size = Math.max(size, 2);
  87.       int mid = size / 2;
  88.       g.translate(x, y);
  89.       if (isEnabled) {
  90.          g.setColor(UIManager.getColor("controlDkShadow"));
  91.       } else {
  92.          g.setColor(UIManager.getColor("controlShadow"));
  93.       }
  94.  
  95.       switch (direction) {
  96.          case 1:
  97.             int var16;
  98.             for(var16 = 0; var16 < size; ++var16) {
  99.                g.drawLine(mid - var16, var16, mid + var16, var16);
  100.             }
  101.  
  102.             if (!isEnabled) {
  103.                g.setColor(UIManager.getColor("controlHighlight"));
  104.                g.drawLine(mid - var16 + 2, var16, mid + var16, var16);
  105.             }
  106.             break;
  107.          case 3:
  108.             if (!isEnabled) {
  109.                g.translate(1, 1);
  110.                g.setColor(UIManager.getColor("controlHighlight"));
  111.  
  112.                for(int var14 = size - 1; var14 >= 0; --var14) {
  113.                   g.drawLine(j, mid - var14, j, mid + var14);
  114.                   ++j;
  115.                }
  116.  
  117.                g.translate(-1, -1);
  118.                g.setColor(UIManager.getColor("controlShadow"));
  119.             }
  120.  
  121.             j = 0;
  122.  
  123.             for(int var15 = size - 1; var15 >= 0; --var15) {
  124.                g.drawLine(j, mid - var15, j, mid + var15);
  125.                ++j;
  126.             }
  127.             break;
  128.          case 5:
  129.             if (!isEnabled) {
  130.                g.translate(1, 1);
  131.                g.setColor(UIManager.getColor("controlHighlight"));
  132.  
  133.                for(int var12 = size - 1; var12 >= 0; --var12) {
  134.                   g.drawLine(mid - var12, j, mid + var12, j);
  135.                   ++j;
  136.                }
  137.  
  138.                g.translate(-1, -1);
  139.                g.setColor(UIManager.getColor("controlShadow"));
  140.             }
  141.  
  142.             j = 0;
  143.  
  144.             for(int var13 = size - 1; var13 >= 0; --var13) {
  145.                g.drawLine(mid - var13, j, mid + var13, j);
  146.                ++j;
  147.             }
  148.             break;
  149.          case 7:
  150.             int i;
  151.             for(i = 0; i < size; ++i) {
  152.                g.drawLine(i, mid - i, i, mid + i);
  153.             }
  154.  
  155.             if (!isEnabled) {
  156.                g.setColor(UIManager.getColor("controlHighlight"));
  157.                g.drawLine(i, mid - i + 2, i, mid + i);
  158.             }
  159.       }
  160.  
  161.       g.translate(-x, -y);
  162.       g.setColor(oldColor);
  163.    }
  164.  
  165.    public void requestFocus() {
  166.    }
  167.  
  168.    public void setDirection(int dir) {
  169.       this.direction = dir;
  170.    }
  171. }
  172.